package br.com.duosoftware.orcamento.entidades;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Renato
 *
 */
@Entity
@Table(name = "orcamentos")
public class Orcamento implements Serializable, BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    //
    @OneToOne
    private Dotacao dotacao;
    //
    private int fichaDespesa;
    //
    @OneToOne
    private ElementoDeDespesa elementoDeDespesa;
    //
    @OneToOne
    private PlanoDeConta patrimonio;
    //
    @OneToOne
    private PlanoDeConta vpd;
    //
    @OneToOne
    private CategoriaOrcamento categoriaOrcamento;
    //
    @OneToOne
    private TipoDespesa tipoDespesa;
    //
    @OneToOne
    private Confirmacao primaria;
    //
    @OneToOne
    private TipoCredito tipoCredito;
    //
    private double valorDespesa;
    //
    @Column(length = 10)
    private String leiCredito;
    //
    @Temporal(TemporalType.DATE)
    @Column(name = "data_credito")
    private Date dataCredito;
    
    //
    @Override
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Dotacao getDotacao() {
        return dotacao;
    }

    public void setDotacao(Dotacao dotacao) {
        this.dotacao = dotacao;
    }

    public int getFichaDespesa() {
        return fichaDespesa;
    }

    public void setFichaDespesa(int fichaDespesa) {
        this.fichaDespesa = fichaDespesa;
    }

    public ElementoDeDespesa getElementoDeDespesa() {
        return elementoDeDespesa;
    }

    public void setElementoDeDespesa(ElementoDeDespesa elementoDeDespesa) {
        this.elementoDeDespesa = elementoDeDespesa;
    }

    public PlanoDeConta getPatrimonio() {
        return patrimonio;
    }

    public void setPatrimonio(PlanoDeConta patrimonio) {
        this.patrimonio = patrimonio;
    }

    public PlanoDeConta getVpd() {
        return vpd;
    }

    public void setVpd(PlanoDeConta vpd) {
        this.vpd = vpd;
    }

    public CategoriaOrcamento getCategoriaOrcamento() {
        return categoriaOrcamento;
    }

    public void setCategoriaOrcamento(CategoriaOrcamento categoriaOrcamento) {
        this.categoriaOrcamento = categoriaOrcamento;
    }

    public TipoDespesa getTipoDespesa() {
        return tipoDespesa;
    }

    public void setTipoDespesa(TipoDespesa tipoDespesa) {
        this.tipoDespesa = tipoDespesa;
    }

    public Confirmacao getPrimaria() {
        return primaria;
    }

    public void setPrimaria(Confirmacao primaria) {
        this.primaria = primaria;
    }

    public TipoCredito getTipoCredito() {
        return tipoCredito;
    }

    public void setTipoCredito(TipoCredito tipoCredito) {
        this.tipoCredito = tipoCredito;
    }

    public double getValorDespesa() {
        return valorDespesa;
    }

    public void setValorDespesa(double valorDespesa) {
        this.valorDespesa = valorDespesa;
    }

    public String getLeiCredito() {
        return leiCredito;
    }

    public void setLeiCredito(String leiCredito) {
        this.leiCredito = leiCredito;
    }

    public Date getDataCredito() {
        return dataCredito;
    }

    public void setDataCredito(Date dataCredito) {
        this.dataCredito = dataCredito;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 41 * hash + (this.id != null ? this.id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Orcamento other = (Orcamento) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }
}
